% Ejercicio "Puertas NAND"
\subsection*{\fbox{\theejercicio} - Puertas NAND}

Se desea construir mediante puertas l\'ogicas NAND, dispositivos capaces de  simular cualquier f\'ormula bien formada del cálculo de proposiciones. El fabricante  requiere que se definan las conexiones de la siguiente forma:

\begin{center}
NAND {\em entrada1 entrada2 salida}
\end{center}

para todas y cada una de las puertas que tenga que utilizar. Por ejemplo, la especificaci\'on:

\begin{verbatim}
NAND alfa 1  _s1
NAND beta 1  _s2
NAND _s1 _s2 delta
\end{verbatim}

describe el circuito:

\begin{center}
\includegraphics[0cm,0cm][9.26cm,4.13cm]{./capitulo4/ejercicios/figuras/circuito_NAND.jpg}
\end{center}

Construir mediante LEX y YACC un sistema capaz de generar estas  especificaciones para cualquier f\'ormula bien formada del c\'alculo de proposiciones compuesta por identificadores como proposiciones at\'omicas, {\tt 0} y {\tt 1} representando a las proposiciones siempre falsa y verdadera, y las conectivas:

\begin{center}
\begin{tabular}{ll}
\verb@!@   & negaci\'on          \\
\verb@&&@  & conjunci\'on        \\
\verb@||@  & disyunci\'on        \\
\verb@->@  & implicaci\'on       \\
\verb@<->@ & doble implicaci\'on \\
\end{tabular}
\end{center}

Un ejemplo de entrada al sistema es la f\'ormula bien formada:

\begin{center}\verb@(alfa <-> (beta && delta) -> 0)@\end{center}

\smallskip

NOTAS:

\begin{itemize}
\item Los identificadores de las proposiciones no incluyen el car\'acter subrayado \_
\item La prioridad de operaci\'on de los operadores corresponde a la lista anterior de mayor a menor. La asociatividad es siempre izquierda.
\item Puede suponerse definida la funci\'on C \verb@char *temp()@, que devuelve un nuevo nombre de se\~nal cada vez que es llamada. As\'{\i}, por ejemplo, la ejecuci\'on del programa provoca las siguientes asignaciones:

\begin{center}
\begin{tabular}{ll}
\verb@char *a, *b;@ &   \\
\verb@a = temp();@  & \verb@a <- "_s1"@ \\
\verb@b = temp();@  & \verb@b <- "_s2"@ \\
\end{tabular}
\end{center}
\end{itemize}

% Solución del ejercicio
\subsubsection*{SOLUCI\'ON}


